<?php
/**
 * 描述 : 简单工具性脚步
 * 作者 : Edgar.lee
 */
class tool {
    /**
     * 描述 : 批量添加反斜线
     * 作者 : Edgar.lee
     */
    public static function slashesDeep(&$data) {
        if( !get_magic_quotes_gpc() ) {                                                                                 //未开启 get_magic_quotes_gpc
            
            $waitList = array(&$data);                                                                                  //待处理列表

            do {
                $wk = key($waitList);
                $wv = &$waitList[$wk];
                unset($waitList[$wk]);

                if( is_array($wv) ) {
                    $result = array();                                                                                  //结果列表
                    foreach($wv as $k => &$v) {
                        $result[addslashes($k)] = &$v;
                        $waitList[] = &$v;
                    }
                    $wv = $result;
                } else if( is_string($wv) ) {
                    $wv = addslashes($wv);
                }
            } while( !empty($waitList) );
        }

        return $data;
    }

    /**
     * 描述 : 分组查询SQL, 将返回值复制 false 会重置快照
     * 参数 :
     *     &sql  : 查询的sql语句
     *     &data : 接受查询的结果集
     * 返回 :
     *      true=查询成功,false=无数据
     * 作者 : Edgar.lee
     */
    public static function &eachSql(&$sql, &$data, $name = 'newerp') {
        static $snapshot = null;

        empty($snapshot[$sql]['status']) && $snapshot[$sql]['page'] = 1;                                                //快照无效 && 重置记录
        $limt = ' LIMIT ' . ($snapshot[$sql]['page']++ - 1) * 500 . ',500';                                             //每页50条
        $data = DB::query(Database::SELECT, $sql . $limt)->execute($name)->as_array();                                  //读取数据
        $snapshot[$sql]['status'] = isset($data[0]) || false;                                                           //错误 || 无数据 时快照失效

        return $snapshot[$sql]['status'];
    }
}